##labyrinthe pour Sharp PC1500.
10 DIM C1$(1),C2$(1),C3$(1),F$(2)*34,X$(10),Y$(10),D(3),G(3),F(3),O$(4)
20 C1$(1)="7F7F7F7F7F7F7F":C1$(0)="7F41414141417F"
30 C2$(0)="3E2222223E":C2$(1)="3E3E3E3E3E":C3$(0)="1C141C":C3$(1)="1C1C1C"
40 F$(1)="7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F":F$(2)="3E3E3E3E3E3E3E"
50 O$(1)="Nord  ":O$(2)="Ouest ":O$(3)="Sud    ":O$(4)="Est   "
60 X$(0)="0111111111":X$(1)="0000101110":X$(2)="0101110100":X$(3)="1010010010"
70 X$(4)="0000101110":X$(5)="1111010000":X$(6)="1001010100":X$(7)="0001001000"
80 X$(8)="1000000000":X$(9)="0101100100":X$(10)="1111111111":Y$(0)="1111111111"
90 Y$(1)="1101001000":Y$(2)="1011010111":Y$(3)="1101010111":Y$(4)="1011000100"
100 Y$(5)="0010011100":Y$(6)="1001000111":Y$(7)="0110110101":Y$(8)="0010011100"
110 Y$(9)="0100111011":Y$(10)="1111111110":WAIT
120 GOSUB 760
130 X=0:Y=0:O=4:RANDOM:TX=(RND 9)-1:TY=RND 8:PT=0:T=0
140 PRINT "Le trsor est en x=";TX;" y=";TY:WAIT 0:CLS:TIME=0
150 ON O GOTO 160,200,240,280
160 FOR I=1 TO 3
170 K=I-1:L=1:GOSUB 700:F(I)=U:IF TY=Y+K AND X=TX LET T=4-I
180 K=0:L=2-I:GOSUB 680:G(I)=U
190 K=1:GOSUB 680:D(I)=U:NEXT I:GOTO 320
200 FOR I=1 TO 3
210 K=1-I:L=I:GOSUB 680:F(I)=U:IF Y=TY AND X+K=TX LET T=4-I
220 K=1:L=2-I:GOSUB 700:G(I)=U
230 K=0:GOSUB 700:D(I)=U:NEXT I:GOTO 320
240 FOR I=1 TO 3
250 K=1:L=1:GOSUB 700:F(1)=U:IF Y+K=TY+1 AND TX=X LET T=4-I
260 K=1:L=1:GOSUB 680:G(1)=U
270 K=0:GOSUB 680:D(1)=U:NEXT I:GOTO 320
280 FOR I=1 TO 3
290 K=1:L=1:GOSUB 680:F(1)=U:IF X+K=TX+1 AND TY=Y LET T=4-I
300 K=0:L=1:GOSUB 700:G(1)=U
310 K=1:GOSUB 700:D(I)=U:NEXT I
320 IF T=3 BEEP 3
330 GOSUB 720
340 GCURSOR 30:GPRINT C1$(G(1));F$(1);C1$(D(1));:IF F(1)=1 AND S<>1 GOTO 430
350 IF S=1 GCURSOR 37:GPRINT "4141414141414141414141414141414141":S=0:GOTO 430
360 IF T=2 BEEP 2
370 GCURSOR 37:GPRINT C2$(G(2));F$(2);C2$(D(2));:IF F(2)=1 AND S<>2 GOTO 430
380 IF S=2 GCURSOR 42:GPRINT "22222222222222":S=0:GOTO 430
390 IF T=1 BEEP 1
400 GCURSOR 42:GPRINT C3$(G(3));"1C";C3$(D(3));:IF F(3)=1 AND S<>3 GOTO 430
410 IF S=3 GCURSOR 45:GPRINT "14":S=0:GOTO 430
420 GCURSOR 45:GPRINT "08";
430 S=0:IF T=3 GOSUB 660
440 T=0:CURSOR 12:PRINT X;":";Y;"   ";O$(O);
450 I$=INKEY$:IF I$="" GOTO 450
460 IF I$<>"1" AND I$<>"2" AND I$<>"3" AND I$<>"5" AND I$<>"." BEEP 1,150:GOTO 450
470 IF I$="5" GOTO 530
480 IF I$="1" LET O=O+1:IF O=5 LET O=1
490 IF I$="2" CURSOR 20:PAUSE TX;",";TY:CURSOR 20:PRINT O$(O):GOTO 450
500 IF I$="3" LET O=O-1:IF O=0 LET O=4
510 IF I$="." LET O=O-2:IF O<1 LET O=O+4
520 BEEP 1,50,50:GOTO 150
530 IF F(1)=1 CURSOR 20:PRINT "Mur!!";:BEEP 1,255:CURSOR 20:PRINT O$(O);:GOTO 450
540 ON O GOTO 550,560,600,640
550 Y=Y-1:GOTO 650
560 X=X-1:IF X>0 GOTO 650
570 IF Y<>0 GOTO 650
580 WAIT 50:CURSOR 12:PRINT "Vous sortez...":CURSOR 12:PRINT "par l7Eentre!!"
590 WAIT 0:CURSOR 12:PRINT "              ":X=0:CURSOR 20:GOTO 440
600 Y=Y+1:IF Y<10 GOTO 650
610 IF PT=1 CURSOR 0:CLS:BEEP 1,150:BEEP 1,100:BEEP 3,20:WAIT 80:PRINT "BRAVO...c7Eest gagn!!":GOTO 750
620 CURSOR 12:WAIT 50:PRINT "Et le trsor??"
630 WAIT 0:CURSOR 12:PRINT "              ":Y=9:GOTO 450
640 X=X+1
650 BEEP 1,90,50:GOTO 150
660 CURSOR 12:WAIT 50:PRINT "Le trsor!!":CURSOR 12:PRINT "Et maintenant":CURSOR 12:PRINT "Il faut sortir"
670 WAIT 0:TX=12:TY=12:PT=1:CURSOR 12:PRINT "              ":CURSOR 20:PRINT O$(O):RETURN
680 IF X+K>10 OR Y+L>10 OR X+K<0 OR Y+L<1 RETURN
690 U=VAL(MID$(X$(X+K),Y+L,1)):RETURN
700 IF Y+K>10 OR X+L>10 OR Y+K<0 OR X+L<1 RETURN
710 U=VAL(MID$(X$(Y+K),X+L,1)):RETURN
720 IF O=3 AND X=9 LET S=10-Y
730 IF O=2 AND Y=0 LET S=1+X
740 RETURN
750 WAIT:PRINT "en";TIME*100;"minutes":END
760 WAIT 20:FOR I=0 TO 2:CURSOR 8:PRINT "LABYRINTHE":CURSOR 8:PRINT "          ":NEXT I
770 WAIT 0:PRINT "Voulez-vous les rgles? ":IF INKEY$="" GOTO 770
780 I$=INKEY$:IF I$="N" WAIT:RETURN
790 WAIT:PAUSE "         rgles"
800 PRINT "BUT:trouver un trsor dans":PRINT "un labyrinthe,et en sortir"
810 PRINT "en un minimum de temps."
820 PRINT "Vous entrez en x=0,y=0.":PRINT "La sortie est en x=9,y=9."
830 PRINT "l7Eaxe des X est ouest->est":PRINT "l7Eaxe des Y est nord->sud"
840 PAUSE "les commandes sont:":PRINT "<1> --> Rotation gauche"
850 PRINT "<3> --> rotation droite":PRINT "<.> --> Demi-tour"
860 PRINT "<5> --> permet d7Eavancer":PRINT "<2> --> Coordonnes trsor"
870 PAUSE "     bonne chance!!":RETURN